/*
 * @Author: liuying 247220246@qq.com
 * @Date: 2025-02-10 17:38:33
 * @LastEditors: liuying 247220246@qq.com
 * @LastEditTime: 2025-02-12 10:44:18
 * @FilePath: \my-book-react\src\bases\utils\traverse-react-node.tsx
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import React from 'react';
import { isFragment } from 'react-is';
// 导出一个函数traverReactNode，用于遍历React节点
export const traverReactNode = (children: React.ReactNode, fn: (child: React.ReactNode, index: number) => void) => {
  // 定义一个handle函数，用于处理React节点
  const handle = (target: React.ReactNode) => {
    let i = 1;
    // 使用React.Children.forEach遍历React节点
    React.Children.forEach(target, (child) => {
      // 如果节点是Fragment，则递归处理其子节点
      if (isFragment(child)) {
        handle(child.props.children);
      } else {
        // 否则，调用传入的函数fn处理节点
        fn(child, i);
        i++;
      }
    });
  };
  // 调用handle函数处理传入的children节点
  handle(children);
};
